
/**
1.导入配置模块：
 * import cloudConfig from '@/config/uniCloudConfig.js';
 * 
 * 
2.获取云对象实例：
 * 
 // 使用默认环境配置获取云对象
const userManager = cloudConfig.getCloudObject('userManager');

// 强制使用线上环境获取云对象
const orderManager = cloudConfig.getCloudObject('orderManager', { useOnline: true });
 
3. 切换环境：
// 切换到线上环境
cloudConfig.switchCloudEnv(true);

// 切换到本地环境
cloudConfig.switchCloudEnv(false);

4.设置线上环境地址：
cloudConfig.setOnlineEndpoint('https://your-cloud-api.com');

*/


// uniCloud 配置文件
// 用于管理云对象的环境切换

// 云环境配置
const cloudConfig = {
    // 是否使用线上环境
    useOnline: true,
    // 线上环境地址
    onlineEndpoint: 'https://env-00jxu2733fuf.api-hz.cloudbasefunction.cn', // 线上云环境地址
    // 本地调试时是否显示云函数调用相关日志
    debugLog: true
};

/**
 * 获取云对象实例
 * @param {String} objectName - 云对象名称
 * @param {Object} options - 额外配置选项
 * @returns {Object} 云对象实例
 */
const getCloudObject = (objectName, options = {}) => {
    // 默认配置
    const defaultOptions = {
        useOnline: cloudConfig.useOnline,
        endpoint: cloudConfig.onlineEndpoint
    };

    // 合并配置
    const mergedOptions = { ...defaultOptions, ...options };

    // 如果使用线上环境
    if (mergedOptions.useOnline) {
        console.log(`[Cloud] 使用线上云对象: ${objectName}`);
        return uniCloud.importObject(objectName, {
            customUI: true, // 指定为线上云对象
            endpoint: mergedOptions.endpoint // 线上云环境地址
        });
    } else {
        // 使用本地环境
        console.log(`[Cloud] 使用本地云对象: ${objectName}`);
        return uniCloud.importObject(objectName);
    }
};

/**
 * 切换云环境
 * @param {Boolean} useOnline - 是否使用线上环境
 */
const switchCloudEnv = (useOnline) => {
    cloudConfig.useOnline = !!useOnline;
    console.log(`[Cloud] 已切换到${cloudConfig.useOnline ? '线上' : '本地'}环境`);
};

/**
 * 设置线上环境地址
 * @param {String} endpoint - 线上环境地址
 */
const setOnlineEndpoint = (endpoint) => {
    if (typeof endpoint === 'string' && endpoint.trim()) {
        cloudConfig.onlineEndpoint = endpoint.trim();
        console.log(`[Cloud] 已设置线上环境地址: ${cloudConfig.onlineEndpoint}`);
        return true;
    }
    console.error('[Cloud] 无效的线上环境地址');
    return false;
};

/**
 * 设置调试日志
 * @param {Boolean} enabled - 是否启用调试日志
 */
const setDebugLog = (enabled) => {
    cloudConfig.debugLog = !!enabled;
};

// 导出方法和配置
export default {
    getCloudObject,
    switchCloudEnv,
    setOnlineEndpoint,
    setDebugLog,
    // 导出当前配置的只读副本
    get config() {
        return { ...cloudConfig };
    }
};


